package week03;

public class T024 {
//	static int[] flag = new int[10];//标记0~9数字是否已经存在

	// 求阶乘
//	public static int jiecheng(int n) {
//		int num=1;
//		for(int i=2;i<=n;i++) {
//			num*=i;
//		}
//		return num;
//	}
	// 参数a表示我们需要的是第几个数字
//	public static int exist(int a){
//		int f=0;
//		for(int i=0;i<=9;i++){
//			if(flag[i]==0){
//				f++;
//				if(f==a)return i;
//			}
//		}
//		return 0;
//	}

	static int[] num = new int[10];//存放十个数字0~9
	static boolean[] exist = new boolean[10];//判断每个数字是否已经存在（默认初始化为false没被存放）
	static int n=9;
	static int flag=0;//计数器

	static void dfs(int step) {
		if(flag>=1000000) return;//计数已经完成了，后面就不用走了，直接返回
		
		//终止条件
		if(step==n+1) {//走到最后一个数字了，搜索结束的标志
			flag++;
			if(flag==1000000) {
				for(int i=0;i<=n;i++) {
					System.out.print(num[i]);
				}
			}
			return;
		}
		
		for(int i=0;i<=n;i++) {
			if(!exist[i]) {
				num[step]=i;
				exist[i]=true;
				dfs(step+1);
				exist[i]=false;
			}
		}
		
		return;
	}

	public static void main(String[] args) {
		
		dfs(0);
//		long startTime = System.nanoTime();
//		int num=1000000;
//		String x="";
//		for(int i=9;i>=0;i--) {
//			int n=jiecheng(i);
//			int a=num/n;
//			int yu=num%n;
//			int q; 
//			if (yu != 0) {
//				q = exist(a + 1);
//				num -= n * a;
//			} else {
//				q = exist(a);
//				num -= n * (a - 1);
//			}
//				flag[q] = 1;
//				x += q;
//
//
//		}
//		System.out.println(x);
//		System.out.println("\n程序运行时间：" + (System.nanoTime() - startTime) + "ns.");
	}
}
